home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1999 January - Disc 2
/
Macworld (1999-01) (Disk 2).dmg
/
Serious Demos
/
Symbolic Composer 4.2
/
Environment
/
System
/
CADAR
/
Symbols
/
Other
/
split-to-unison
< prev
Wrap
Lisp/Scheme
|
1998-10-22
|
1KB
|
54 lines
split-to-unison
name symbol-list &rest length-lists
this cousin to split-to-parts is very useful if you
work with neurones and other stuff to match notes.
with this function you can make all rhythms play melody
in unison as far as possible.
so then you can for instance transpose a part and get
perfect parallels on all unison rhythm-notes.
(setq mel '(a b c d e f g))
(setq mel2 (symbol-transpose 4 mel))
(setq rhy1 '(1/8 1/8 1/8 1/8 1/8 1/8 1/8))
(setq rhy2 '(1/4 1/4 1/4 1/4 1/4 1/4 1/4))
this wont result in parallels since rhythms are different.
instead do like this:
(split-to-unison nil mel
rhy1 rhy2)
((a b c d e f g) (a c e g a b c))
you can bind the results
with setq to name if name is other than nil.
(split-to-unison 'rhy-mel mel
rhy1 rhy2)
-> prints and binds
(setq rhy-mel1 '(a b c d e f g))
(setq rhy-mel2 '(a c e g a b c))
so now transpose rhy-mel2 instead of mel:
(setq mel3 (symbol-transpose 4 rhy-mel2))
->(e g i k e f g)
and then:
(def-length i1 rhy1)
(def-length i2 rhy2)
(def-zone default '(4/1))
(def-symbol i1 mel)
(def-symbol i2 mel3)
and so on. . .
you can use as many rhythms as you like:
(split-to-unison nil
'(a c a b a) '(1/8 1/8 1/8 1/8 1/8) '(1/4 1/4 1/4 1/4 1/4) '(1/2 1/16 1/16 1/8 1/8) '(-5/4 1/1)
'(1/12 1/12 1/12 3/8 5/16))
->((a a a a c) (a a c a a) (a c a b a) (c) (a c b a b))
se also split-to-parts.